#include "Namedpipe.hpp"

int main()
{
    // int n = mkfifo(PIPE_NAME.c_str(), mode);
    // if (n == 0)
    //     std::cout << "mkfifo success" << std::endl;
    // else
    // {
    //     perror("mkfifo");
    //     return 1;
    // }

    // int fd = open(PIPE_NAME.c_str(), O_RDONLY);
    // if (fd == -1)
    // {
    //     perror("open");
    //     exit(2);
    // }
    // char buf[SIZE];
    // while (true)
    // {
    //     ssize_t s = read(fd, buf, SIZE - 1);
    //     if (s > 0)
    //     {
    //         buf[s] = 0;
    //         std::cout << "client get: " << buf << std::endl;
    //         std::cout << "return from read is " << s << std::endl;
    //     }
    //     else if (s == 0)
    //     {
    //         std::cout << "server quit, client quit too" << std::endl;
    //         std::cout << "return from read is " << s << std::endl;
    //         break;
    //     }
    //     else
    //     {
    //         perror("read");
    //         std::cout << "return from read is " << s << std::endl;
    //         break;
    //     }
    // }

    // close(fd);
    // int m = unlink(PIPE_NAME.c_str());

    NamedPipe named_pipe(PIPE_NAME,0666);
    named_pipe.Create();
    named_pipe.OpenForRead();

    std::string message;
    while(true)
    {
        if(named_pipe.Read(&message))
            std::cout << "server get: " << message << std::endl;
        else
        {
            std::cout << "client quit, server quit too" << std::endl;
            break;
        }
    }

    named_pipe.Close();
    named_pipe.Remove();
    return 0;
}